package com.wang.springframework.aop;

/**
 * @author wangjianhua
 * @Description 用于获取一个AOP调用 如果不存在 将通过反射调用advice选择终止拦截器链本身
 * @date 2021/9/1/001 20:41
 */
public class TargetSource {

    private final Object target;

    public TargetSource(Object target) {
        this.target = target;
    }

    /**
     * 返回该TargetSource的目标类型 可以返回null  尽管它只适用于预定的目标类
     * @return 返回的目标类型
     */
    public Class<?>[] getTargetClass(){
        return  this.target.getClass().getInterfaces();
    }

    /**
     * 在AOP框架调用AOP方法调用的目标前返回一个目标实例
     * @return 包含pointcut的目标对象
     */
    public Object getTarget(){
        return this.target;
    }
}
